<script>
	export default {
		onLaunch: function() {
			console.log('App Launch');
			// 在启动时不立即检查登录状态，让页面先加载
			setTimeout(() => {
				this.checkLoginStatus();
			}, 300);
		},
		onShow: function() {
			console.log('App Show');
			// 每次显示App时检查登录状态，但给一点延迟
			setTimeout(() => {
				this.checkLoginStatus();
			}, 300);
		},
		onHide: function() {
			console.log('App Hide');
		},
		methods: {
			// 检查登录状态
			checkLoginStatus() {
				try {
					// 检查会话ID是否存在
					const sessionId = uni.getStorageSync('sessionId');
					const cookies = uni.getStorageSync('cookies');
					const currentPage = this.getCurrentPageRoute();
					
					console.log('当前页面:', currentPage, '会话状态:', sessionId ? '已登录' : '未登录');
					
					// 如果有会话ID或者有包含SHIRO_SESSION_ID的cookie，则认为已登录
					const isLoggedIn = !!sessionId || this.hasCookieSession(cookies);
					
					if (!isLoggedIn) {
						// 如果没有登录，且不在白名单页面，则跳转到登录页
						if (!this.isWhiteListPage(currentPage)) {
							console.log('未检测到登录状态，将跳转到登录页');
							uni.reLaunch({ url: '/pages/login/login' });
						}
					} else if (currentPage === 'pages/login/login') {
						// 已有会话但在登录页，跳转到首页
						console.log('检测到登录状态，但在登录页，将跳转到首页');
						uni.reLaunch({ url: '/pages/index/index' });
					} else {
						console.log('已登录且不在登录页，无需跳转');
					}
				} catch (e) {
					console.error('检查登录状态出错:', e);
				}
			},
			
			// 检查cookie中是否有会话信息
			hasCookieSession(cookiesStr) {
				if (!cookiesStr) return false;
				
				try {
					const cookies = JSON.parse(cookiesStr);
					if (Array.isArray(cookies)) {
						return cookies.some(cookie => cookie.includes('SHIRO_SESSION_ID'));
					}
				} catch (e) {
					console.error('解析Cookie出错:', e);
				}
				
				return false;
			},
			
			// 获取当前页面路由
			getCurrentPageRoute() {
				const pages = getCurrentPages();
				if (pages.length === 0) {
					return '';
				}
				return pages[0].route || '';
			},
			
			// 检查是否为白名单页面（不需要登录的页面）
			isWhiteListPage(route) {
				const whiteList = [
					'pages/login/login', 
					'pages/shared/article', 
					'pages/shared/category'
				];
				
				return whiteList.some(page => route && route.indexOf(page) !== -1);
			}
		}
	}
</script>

<style>
	/*每个页面公共css */
</style>
